iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 4
0

昨天學完命名後,今天來學函式吧。
讀完整本書後個人認為函式的主要準則就是:簡短,單一。
但只有這樣講的話實在太過抽象,我們馬上做更詳細的解析吧。

區塊,縮排

要盡量避免在if或else或while中出現巢状結構,for迴圈的話通常會用於取得或尋找東西所以很難不在裡面做其他判斷。
但如果多個for迴圈的巢状結構反而會不好code review跟debug
這部份單用說明會很難說明。因此直接看code吧。
假如要印出一個MapList裡所有value為null的map,我以前的寫法:
巢状結構的printMapKeyWhoseValueIsNull:

    public void printMapListKeyWhoseValueIsNull(List<Map<String, String>> listMap){
        for (Map<String, String> map : listMap){
        System.out.println("---------------------");
            for (String key : map.keySet()){
                if (map.get(key) == null){
                    System.out.println(key);
                }
            }
        }
    }

重構後:

public void printMapListKeyWhoseValueIsNull(List<Map<String, String>> listMap){
    for (Map<String, String> map : listMap){
        System.out.println("---------------------");
        printMap(map);
    }
}

private void printMapValueIsNullKey(Map<String, String> map){
    for (String key : map.keySet()){
        if (map.get(key) == null){
            System.out.println(key);
        }
    }
}

如此一來雖然行數變多了但閱讀起來會相對比較輕鬆一點。
而且由於印出map內容這件事情被分開來了,因此會更好的code review。

總結

或許會有讀者發現怎麼這麼快就總結了。
這邊我只能跟大家說對不起QQ,最近這幾天開始臨時有點忙所以內容變少了。
我會盡量想辦法下次增加內容的。


上一篇
clean code - 命名(後篇)
下一篇
clean code - 函式(二)
系列文
為這美好世界獻上clean code!!5
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言